package com.example.review.provider;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/**
 * 建立自己的内容提供器  继承自ContentProvider 重写它的六个抽象方法
 */
public class MyProvider extends ContentProvider {
    //DIR 访问表中所有数据    ITEM 访问表中的单条数据
    public static final int TABLE1_DIR = 0;
    public static final int TABLE1_ITEM = 1;
    public static final int TABLE2_DIR = 2;
    public static final int TABLE2_ITEM = 3;
    private static UriMatcher uriMatcher;

    static {
        //构造方法中需要一个整形参数 code    UriMatcher.NO_MATCH表示-1
        uriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI("com.example.review.provider", "table1", TABLE1_DIR); //table1整张表
        uriMatcher.addURI("com.example.review.provider ", "table1/#", TABLE1_ITEM);//table单条数据
        uriMatcher.addURI("com.example.review.provider ", "table2", TABLE2_DIR);
        uriMatcher.addURI("com.example.review.provider ", "table2/#", TABLE2_ITEM);
    }

    @Override
    public boolean onCreate() {
        return false;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) {
        switch (uriMatcher.match(uri)){
            case TABLE1_DIR:
                //todo 查询table1表中的所有数据
                break;
            case TABLE1_ITEM:
                //todo 查询table1表中的单条数据
                break;
            case TABLE2_DIR:
                //todo  查询table2表中的所有数据
                break;
            case TABLE2_ITEM:
                //todo 查询table2表中的单条数据
                break;
        }
        return null;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        switch (uriMatcher.match(uri)){
            case TABLE1_DIR:
                return "vnd.android.cursor.dir/vnd.com.example.review.provider.table1";
            case TABLE1_ITEM:
                return "vnd.android.cursor.item/vnd.com.example.review.provider.table1";
            case TABLE2_DIR:
                return "vnd.android.cursor.dir/vnd.com.example.review.provider.table2";
            case TABLE2_ITEM:
                return "vnd.android.cursor.item/vnd.com.example.review.provider.table2";
            default:
                break;
        }
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
        return null;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }
}
